{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tensorflow import keras\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = pd.read_csv('./Tweets.csv')\n",
    "data = data[['airline_sentiment','text']]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_p = data[data.airline_sentiment == 'positive']\n",
    "data_n = data[data.airline_sentiment == 'negative']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "取相同数量的评论"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_n = data_n.iloc[:len(data_p)]\n",
    "data = pd.concat([data_n,data_p])\n",
    "data['airline_sentiment'] = (data.airline_sentiment=='positive').astype('int')\n",
    "data = data.sample(len(data))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "过滤无效字符"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "import re\n",
    "token = re.compile('[A-Za-z]+|[!?,.()]')\n",
    "def reg_text(text):\n",
    "    new_text = token.findall(text)\n",
    "    new_text = [word.lower() for word in new_text]\n",
    "    return new_text\n",
    "data['text'] = data.text.apply(reg_text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "将词汇数字化，长度不够则补0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "word_set = set()\n",
    "for text in data.text:\n",
    "    for word in text:\n",
    "        word_set.add(word)\n",
    "word_list = list(word_set)\n",
    "word_index = dict((word,word_list.index(word)+1) for word in word_list)\n",
    "data_processed  = data.text.apply(lambda x: [word_index.get(word,0) for word in x])\n",
    "max_word = len(word_set) + 1\n",
    "max_len = max(len(x) for x in data_processed)\n",
    "data_processed = keras.preprocessing.sequence.pad_sequences(data_processed,maxlen=max_len)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "引入预训练词向量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "embeddings_index = {}\n",
    "f = open('./glove.6B.50d.txt', encoding=\"utf-8\")\n",
    "for line in f:\n",
    "    values = line.split()\n",
    "    word = values[0]\n",
    "    coefs = np.asarray(values[1:], dtype='float32')\n",
    "    embeddings_index[word] = coefs\n",
    "f.close()\n",
    "embedding_matrix = np.zeros((max_word, 50))\n",
    "for word, i in word_index.items():\n",
    "    if i >= max_word:  \n",
    "        continue\n",
    "    embedding_vector = embeddings_index.get(word)  # 根据词向量字典获取该单词对应的词向量\n",
    "    if embedding_vector is not None:\n",
    "        embedding_matrix[i] = embedding_vector"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "全连接"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "model = keras.Sequential()\n",
    "model.add(keras.layers.Embedding(max_word,50,input_length=max_len))\n",
    "model.add(keras.layers.Flatten())\n",
    "model.add(keras.layers.Dense(16,activation='relu',kernel_regularizer='l2'))\n",
    "model.add(keras.layers.Dense(1,activation='sigmoid',kernel_regularizer='l2'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "普通CNN"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "model = keras.Sequential()\n",
    "model.add(keras.layers.Embedding(max_word,50,input_length=max_len))\n",
    "model.add(keras.layers.Conv1D(16,3,activation='relu'))\n",
    "model.add(keras.layers.MaxPool1D())\n",
    "model.add(keras.layers.Conv1D(16,3,activation='relu'))\n",
    "model.add(keras.layers.MaxPool1D())\n",
    "model.add(keras.layers.Conv1D(16,3,activation='relu'))\n",
    "model.add(keras.layers.MaxPool1D())\n",
    "model.add(keras.layers.Flatten())\n",
    "model.add(keras.layers.Dropout(0.5))\n",
    "model.add(keras.layers.Dense(1,activation='sigmoid',kernel_regularizer='l2'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "LSTM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = keras.Sequential()\n",
    "model.add(keras.layers.Embedding(max_word,50,input_length=max_len))\n",
    "model.add(keras.layers.LSTM(128))\n",
    "model.add(keras.layers.Dense(1,activation='sigmoid',kernel_regularizer='l2'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "textCNN"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "main_input = keras.Input(shape=(max_len,),)\n",
    "#embedder = keras.layers.Embedding(max_word,50,input_length=max_len)\n",
    "embedder = keras.layers.Embedding(max_word,50,embeddings_initializer=keras.initializers.Constant(embedding_matrix),input_length=max_len,trainable=True)\n",
    "embed = embedder(main_input)\n",
    "cnn1 = keras.layers.Conv1D(32, 3,padding='same', strides=1, activation='relu')(embed)\n",
    "cnn1 = keras.layers.MaxPool1D()(cnn1)\n",
    "cnn2 = keras.layers.Conv1D(32, 4, padding='same',strides=1, activation='relu')(embed)\n",
    "cnn2 = keras.layers.MaxPool1D()(cnn2)\n",
    "cnn3 = keras.layers.Conv1D(32, 5, padding='same',strides=1, activation='relu')(embed)\n",
    "cnn3 = keras.layers.MaxPool1D()(cnn3)\n",
    "cnn = keras.layers.concatenate([cnn1,cnn2,cnn3],axis=-1)\n",
    "#cnn = keras.layers.Flatten()(cnn)\n",
    "cnn = keras.layers.GlobalAveragePooling1D()(cnn)\n",
    "main_output = keras.layers.Dense(1, activation='sigmoid')(cnn)\n",
    "model = keras.Model(inputs=main_input, outputs=main_output)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "embedding_6 (Embedding)      (None, 40, 50)            355050    \n",
      "_________________________________________________________________\n",
      "lstm (LSTM)                  (None, 128)               91648     \n",
      "_________________________________________________________________\n",
      "dense_7 (Dense)              (None, 1)                 129       \n",
      "=================================================================\n",
      "Total params: 446,827\n",
      "Trainable params: 446,827\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.compile(optimizer=keras.optimizers.RMSprop(lr=0.0001),loss='binary_crossentropy',metrics=['acc'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 2835 samples, validate on 1891 samples\n",
      "Epoch 1/100\n",
      "2835/2835 [==============================] - 3s 1ms/step - loss: 0.7113 - acc: 0.6007 - val_loss: 0.7077 - val_acc: 0.6621\n",
      "Epoch 2/100\n",
      "2835/2835 [==============================] - 2s 687us/step - loss: 0.7013 - acc: 0.6571 - val_loss: 0.6906 - val_acc: 0.6134\n",
      "Epoch 3/100\n",
      "2835/2835 [==============================] - 2s 676us/step - loss: 0.6784 - acc: 0.6113 - val_loss: 0.6651 - val_acc: 0.5918\n",
      "Epoch 4/100\n",
      "2835/2835 [==============================] - 2s 672us/step - loss: 0.6578 - acc: 0.6776 - val_loss: 0.6469 - val_acc: 0.6573\n",
      "Epoch 5/100\n",
      "2835/2835 [==============================] - 2s 681us/step - loss: 0.6393 - acc: 0.7051 - val_loss: 0.6292 - val_acc: 0.7086\n",
      "Epoch 6/100\n",
      "2835/2835 [==============================] - 2s 687us/step - loss: 0.6208 - acc: 0.7051 - val_loss: 0.6097 - val_acc: 0.7113\n",
      "Epoch 7/100\n",
      "2835/2835 [==============================] - 2s 698us/step - loss: 0.5995 - acc: 0.7203 - val_loss: 0.6014 - val_acc: 0.7266\n",
      "Epoch 8/100\n",
      "2835/2835 [==============================] - 2s 688us/step - loss: 0.5811 - acc: 0.7224 - val_loss: 0.5785 - val_acc: 0.7324\n",
      "Epoch 9/100\n",
      "2835/2835 [==============================] - 2s 694us/step - loss: 0.5602 - acc: 0.7376 - val_loss: 0.5672 - val_acc: 0.7372\n",
      "Epoch 10/100\n",
      "2835/2835 [==============================] - 2s 682us/step - loss: 0.5407 - acc: 0.7489 - val_loss: 0.5336 - val_acc: 0.7530\n",
      "Epoch 11/100\n",
      "2835/2835 [==============================] - 2s 689us/step - loss: 0.5137 - acc: 0.7647 - val_loss: 0.5123 - val_acc: 0.7705\n",
      "Epoch 12/100\n",
      "2835/2835 [==============================] - 2s 713us/step - loss: 0.4791 - acc: 0.7824 - val_loss: 0.5116 - val_acc: 0.7721\n",
      "Epoch 13/100\n",
      "2835/2835 [==============================] - 2s 690us/step - loss: 0.4451 - acc: 0.8035 - val_loss: 0.4795 - val_acc: 0.7906\n",
      "Epoch 14/100\n",
      "2835/2835 [==============================] - 2s 693us/step - loss: 0.4129 - acc: 0.8257 - val_loss: 0.4189 - val_acc: 0.8170\n",
      "Epoch 15/100\n",
      "2835/2835 [==============================] - 2s 698us/step - loss: 0.3786 - acc: 0.8409 - val_loss: 0.3854 - val_acc: 0.8302\n",
      "Epoch 16/100\n",
      "2835/2835 [==============================] - 2s 699us/step - loss: 0.3478 - acc: 0.8593 - val_loss: 0.4156 - val_acc: 0.8699\n",
      "Epoch 17/100\n",
      "2835/2835 [==============================] - 2s 680us/step - loss: 0.3250 - acc: 0.8762 - val_loss: 0.3370 - val_acc: 0.8662\n",
      "Epoch 18/100\n",
      "2835/2835 [==============================] - 2s 680us/step - loss: 0.3027 - acc: 0.8885 - val_loss: 0.3344 - val_acc: 0.8530\n",
      "Epoch 19/100\n",
      "2835/2835 [==============================] - 2s 716us/step - loss: 0.2900 - acc: 0.8942 - val_loss: 0.3593 - val_acc: 0.8403\n",
      "Epoch 20/100\n",
      "2835/2835 [==============================] - 2s 679us/step - loss: 0.2778 - acc: 0.9026 - val_loss: 0.3548 - val_acc: 0.8414\n",
      "Epoch 21/100\n",
      "2835/2835 [==============================] - 2s 689us/step - loss: 0.2624 - acc: 0.9058 - val_loss: 0.3216 - val_acc: 0.8577\n",
      "Epoch 22/100\n",
      "2835/2835 [==============================] - 2s 705us/step - loss: 0.2505 - acc: 0.9122 - val_loss: 0.3389 - val_acc: 0.8953\n",
      "Epoch 23/100\n",
      "2835/2835 [==============================] - 2s 706us/step - loss: 0.2413 - acc: 0.9150 - val_loss: 0.2783 - val_acc: 0.9064\n",
      "Epoch 24/100\n",
      "2835/2835 [==============================] - 2s 702us/step - loss: 0.2282 - acc: 0.9256 - val_loss: 0.3376 - val_acc: 0.8889\n",
      "Epoch 25/100\n",
      "2835/2835 [==============================] - 2s 684us/step - loss: 0.2222 - acc: 0.9280 - val_loss: 0.2681 - val_acc: 0.9122\n",
      "Epoch 26/100\n",
      "2835/2835 [==============================] - 2s 668us/step - loss: 0.2135 - acc: 0.9330 - val_loss: 0.2637 - val_acc: 0.9154\n",
      "Epoch 27/100\n",
      "2835/2835 [==============================] - 2s 709us/step - loss: 0.2001 - acc: 0.9365 - val_loss: 0.2729 - val_acc: 0.9175\n",
      "Epoch 28/100\n",
      "2835/2835 [==============================] - 2s 683us/step - loss: 0.1899 - acc: 0.9397 - val_loss: 0.3894 - val_acc: 0.8503\n",
      "Epoch 29/100\n",
      "2835/2835 [==============================] - 2s 694us/step - loss: 0.1799 - acc: 0.9400 - val_loss: 0.3522 - val_acc: 0.8630\n",
      "Epoch 30/100\n",
      "2835/2835 [==============================] - 2s 705us/step - loss: 0.1754 - acc: 0.9467 - val_loss: 0.4213 - val_acc: 0.8498\n",
      "Epoch 31/100\n",
      "2835/2835 [==============================] - 2s 707us/step - loss: 0.1698 - acc: 0.9485 - val_loss: 0.2631 - val_acc: 0.9196\n",
      "Epoch 32/100\n",
      "2835/2835 [==============================] - 2s 693us/step - loss: 0.1587 - acc: 0.9510 - val_loss: 0.2761 - val_acc: 0.8964\n",
      "Epoch 33/100\n",
      "2835/2835 [==============================] - 2s 708us/step - loss: 0.1576 - acc: 0.9506 - val_loss: 0.2593 - val_acc: 0.9117\n",
      "Epoch 34/100\n",
      "2835/2835 [==============================] - 2s 709us/step - loss: 0.1476 - acc: 0.9534 - val_loss: 0.2744 - val_acc: 0.9196\n",
      "Epoch 35/100\n",
      "2835/2835 [==============================] - 2s 703us/step - loss: 0.1454 - acc: 0.9570 - val_loss: 0.2643 - val_acc: 0.9212\n",
      "Epoch 36/100\n",
      "2835/2835 [==============================] - 2s 695us/step - loss: 0.1409 - acc: 0.9594 - val_loss: 0.2614 - val_acc: 0.9207\n",
      "Epoch 37/100\n",
      "2176/2835 [======================>.......] - ETA: 0s - loss: 0.1381 - acc: 0.9568"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-42-951eeb9395e1>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mhistory\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata_processed\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mairline_sentiment\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mepochs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mbatch_size\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m128\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mvalidation_split\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0.4\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32mE:\\anaconda\\envs\\kr\\lib\\site-packages\\tensorflow\\python\\keras\\engine\\training.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, max_queue_size, workers, use_multiprocessing, **kwargs)\u001b[0m\n\u001b[0;32m   1637\u001b[0m           \u001b[0minitial_epoch\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0minitial_epoch\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1638\u001b[0m           \u001b[0msteps_per_epoch\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msteps_per_epoch\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1639\u001b[1;33m           validation_steps=validation_steps)\n\u001b[0m\u001b[0;32m   1640\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1641\u001b[0m   def evaluate(self,\n",
      "\u001b[1;32mE:\\anaconda\\envs\\kr\\lib\\site-packages\\tensorflow\\python\\keras\\engine\\training_arrays.py\u001b[0m in \u001b[0;36mfit_loop\u001b[1;34m(model, inputs, targets, sample_weights, batch_size, epochs, verbose, callbacks, val_inputs, val_targets, val_sample_weights, shuffle, initial_epoch, steps_per_epoch, validation_steps)\u001b[0m\n\u001b[0;32m    213\u001b[0m           \u001b[0mins_batch\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mins_batch\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtoarray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    214\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 215\u001b[1;33m         \u001b[0mouts\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mins_batch\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    216\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mouts\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    217\u001b[0m           \u001b[0mouts\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mouts\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mE:\\anaconda\\envs\\kr\\lib\\site-packages\\tensorflow\\python\\keras\\backend.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, inputs)\u001b[0m\n\u001b[0;32m   2984\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2985\u001b[0m     fetched = self._callable_fn(*array_vals,\n\u001b[1;32m-> 2986\u001b[1;33m                                 run_metadata=self.run_metadata)\n\u001b[0m\u001b[0;32m   2987\u001b[0m     \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_call_fetch_callbacks\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfetched\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_fetches\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2988\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[0mfetched\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0moutputs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mE:\\anaconda\\envs\\kr\\lib\\site-packages\\tensorflow\\python\\client\\session.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m   1437\u001b[0m           ret = tf_session.TF_SessionRunCallable(\n\u001b[0;32m   1438\u001b[0m               \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_session\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_session\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_handle\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstatus\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1439\u001b[1;33m               run_metadata_ptr)\n\u001b[0m\u001b[0;32m   1440\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mrun_metadata\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1441\u001b[0m           \u001b[0mproto_data\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtf_session\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mTF_GetBuffer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrun_metadata_ptr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "history = model.fit(data_processed,data.airline_sentiment.values,epochs=100,batch_size=128,validation_split=0.4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x2d2cfdd4e80>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(history.epoch,history.history.get('acc'),c=\"r\",label=\"acc\")\n",
    "plt.plot(history.epoch,history.history.get('val_acc'),c=\"b\",label=\"val_acc\")\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x2d2dc879a58>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(history.epoch,history.history.get('loss'),c=\"r\",label=\"loss\")\n",
    "plt.plot(history.epoch,history.history.get('val_loss'),c=\"b\",label=\"val_loss\")\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
